package com.collectionAndMap.collection.set;

import com.collectionAndMap.collection.list.Student;

import java.util.HashSet;


/***
 * @ClassName: HashSetDemo
 * @Description: HashSet 哈希表实现（数组+链表+红黑树）
 * 存储过程
 * （1）根据hashCode方法计算保存的位置，如果位置为空，则直接保存，如果不为空则执行第二步
 * （2）执行equals方法，如果equals方法为true，则认为是重复的，拒绝添加，否则形成链表储存
 *
 * @Auther: 送一一块二向箔
 * @Date: 15:30 2022/2/17
 * @version : V1.0
 */
public class HashSetDemo {
    public static void main(String[] args) {
        HashSet<Student> set = new HashSet();

        Student s1 = new Student("梅西", 1, "1");
        Student s2 = new Student("内马尔",2,"0");
        Student s3 = new Student("苏牙",3,"0");

        set.add(s1);
        set.add(s2);
        set.add(s3);
        set.add(new Student("梅西", 1, "1"));
        System.out.println(set.size());

        //重写了equals和hashCode才能这样删除，否则删除不了
        set.remove(new Student("梅西", 1, "1"));
        System.out.println(set.size());
    }
}
